home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / news / thor / rexx / event2msg.thor < prev    next >
Text File  |  1998-05-24  |  4KB  |  149 lines

  1. /*
  2.  $VER: Event2Msg.thor 1.1 (24.6.96)
  3.  by Remco van Hooff (rvhooff@globalxs.nl)
  4.  
  5.  Moves the current event to any conference (on the same system).
  6.  
  7.  Handy if you're writing scripts for Thor and you need a msg that contains
  8.  a sertain text, but you can't find it in your database. So now you can
  9.  write your own msg (event) and use this script to move it to your desired
  10.  conference. It can also handle an attached file.
  11.  After the event is moved the entered msg will be shown in the destination
  12.  conference.
  13.  
  14.  HISTORY
  15.  1.1 - Now works correcly with systems and conferences that contain spaces.
  16.      - Fixed a problem with the Thor ARexx port.
  17. */
  18.  
  19. EDF_DELETED  = '00000001'x   /* Event is deleted */
  20. EDF_DONE     = '00000004'x   /* Event is done */
  21. EDF_ERROR    = '00000008'x   /* Error performing this event */
  22. EDF_FREEZE   = '00000020'x   /* Event is frozen. */
  23.  
  24. options results
  25. OPTIONS FAILAT 31
  26.  
  27.  
  28. p=' '||ADDRESS()||' '||SHOW('P',,)
  29. IF POS(' THOR.',p)>0 THEN thorport=WORD(SUBSTR(p,POS(' THOR.',p)+1),1)
  30. ELSE DO
  31.   SAY 'THOR port not found!'
  32.   EXIT 10
  33. END
  34.  
  35. IF ~SHOW('p', 'BBSREAD') THEN DO
  36.   ADDRESS COMMAND
  37.     "run >nil: `GetEnv THOR/THORPath`bin/LoadBBSRead"
  38.     "WaitForPort BBSREAD"
  39. END
  40.  
  41. ADDRESS(thorport)
  42.   GETSELECTEDEVENT
  43.   IF RC = 5 THEN DO
  44.     REQUESTNOTIFY TEXT '"The events window is not open."' BT '"_Ok"'
  45.     EXIT
  46.   END
  47.   IF RC = 30 THEN DO
  48.     REQUESTNOTIFY TEXT '"'THOR.LASTERROR'"' BT '"_Ok"'
  49.     EXIT
  50.   END
  51.   event = RESULT
  52.  
  53.   CURRENTSYSTEM STEM CURRENT
  54.   IF(RC ~= 0) THEN DO
  55.     REQUESTNOTIFY TEXT '"'THOR.LASTERROR'"' BT "_Ok"
  56.     EXIT
  57.   END
  58.   system = CURRENT.BBSNAME
  59.  
  60. ADDRESS BBSREAD
  61.   GETBBSDATA BBSNAME '"'system'"' STEM BBSDATA
  62.   IF(RC ~= 0) THEN DO
  63.     ADDRESS(thorport)
  64.     REQUESTNOTIFY TEXT '"'BBSREAD.LASTERROR'"' BT "_Ok"
  65.     EXIT
  66.   END
  67.  
  68.   GETCONFLIST '"'system'"' STEM CONFLIST
  69.   IF(RC ~= 0) THEN DO
  70.     ADDRESS(thorport)
  71.     REQUESTNOTIFY TEXT '"'BBSREAD.LASTERROR'"' BT "_Ok"
  72.     EXIT
  73.   END
  74.  
  75. CALL ask_conf
  76.  
  77. ADDRESS BBSREAD
  78.   READBREVENT BBSNAME '"'system'"' EVENTNR event DATASTEM EVENTDATA TAGSSTEM EVENTTAGS
  79.   IF(RC ~= 0) THEN DO
  80.     ADDRESS(thorport)
  81.     REQUESTNOTIFY TEXT '"'BBSREAD.LASTERROR'"' BT "_Ok"
  82.     EXIT
  83.   END
  84.   IF BITAND(EVENTDATA.FLAGS, BITOR(BITOR(BITOR(EDF_DELETED, EDF_DONE), EDF_ERROR), EDF_FREEZE)) = '00000000'x THEN CALL move
  85.  
  86. ADDRESS(thorport)
  87. UPDATECONFWINDOW
  88. SHOWCONFERENCE '"'conf'"'
  89.  
  90. EXIT
  91.  
  92. ask_conf:
  93.   ADDRESS(thorport)
  94.   IF CONFLIST.COUNT > 0 THEN DO
  95.     REQUESTLIST CONFLIST TITLE '"Move current event to:"' SIZEGADGET
  96.     IF (RC = 30) THEN DO
  97.       REQUESTNOTIFY TEXT '"'THOR.LASTERROR'"' BT '"_Ok"'
  98.       EXIT
  99.     END
  100.     IF RC = 5 then EXIT
  101.   END
  102.   IF found.COUNT = 0 THEN DO
  103.     REQUESTNOTIFY '"No conferences found on system/n'system'"' '"_Ok"'
  104.     EXIT
  105.   END
  106.   conf = RESULT
  107. RETURN
  108.  
  109. move:
  110.   MSG.FROMNAME = 'TEST MESSAGE'
  111.   MSG.FROMADDR = BBSDATA.EMAILADDR
  112.   MSG.TOADDR   = EVENTTAGS.TOADDR
  113.   MSG.SUBJECT  = EVENTTAGS.SUBJECT
  114.   IF EVENTTAGS.TONAME ~= 'EVENTTAGS.TONAME' THEN MSG.TONAME = EVENTTAGS.TONAME
  115.  
  116.   IF ~OPEN(tmp, BBSDATA.BBSPATH||EVENTTAGS.MSGFILE, 'R') THEN DO
  117.     ADDRESS(thorport)
  118.     REQUESTNOTIFY TEXT "'Can not open' BBSDATA.BBSPATH||EVENTTAGS.MSGFILE" BT "_Ok"
  119.     EXIT
  120.   END
  121.   ELSE DO
  122.     z = 0
  123.     DO UNTIL EOF(tmp)
  124.       z = z+1
  125.       MSG.TEXT.z = READLN(tmp)
  126.     END
  127.     CLOSE(tmp)
  128.     MSG.TEXT.COUNT = z
  129.     IF ~(EVENTTAGS.LOCALFILE = '' | EVENTTAGS.LOCALFILE = 'EVENTTAGS.LOCALFILE') THEN DO
  130.       MSG.PART.COUNT = 1
  131.       MSG.PART.1.BINARY = EVENTTAGS.LOCALFILE
  132.       MSG.PART.1.BINARY.DESC = 'Attached file'
  133.     END
  134.   END
  135.  
  136. WRITEBRMESSAGE BBSNAME '"'system'"' confname '"'conf'"' stem MSG
  137.   IF(RC ~= 0) THEN DO
  138.     ADDRESS(thorport)
  139.     REQUESTNOTIFY TEXT '"'BBSREAD.LASTERROR'"' BT "_Ok"
  140.     EXIT
  141.   END
  142. UPDATEBREVENT BBSNAME '"'system'"' EVENTNR event SETDELETED
  143.   IF(RC ~= 0) THEN DO
  144.     ADDRESS(thorport)
  145.     REQUESTNOTIFY TEXT '"'BBSREAD.LASTERROR'"' BT "_Ok"
  146.     EXIT
  147.   END
  148. RETURN
  149.